package com.inifitness.admin.core.config.mp;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.inifitness.admin.core.config.mp.handler.MyDataPermissionHandler;
import com.inifitness.admin.core.config.mp.handler.MyMetaObjectHandler;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * mybatis-plus 配置类
 *
 * @author sunjinfeng
 * @since 2024/04/18 11:00:00
 */
@Configuration
@EnableTransactionManagement
public class MybatisConfig {

  /**
   * 分页插件和数据权限插件
   */
  @Bean
  public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    //数据权限
    interceptor.addInnerInterceptor(new DataPermissionInterceptor(new MyDataPermissionHandler()));
    //分页插件
    interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));

    return interceptor;
  }

  /**
   * 自动填充数据库创建人、创建时间、更新人、更新时间
   */
  @Bean
  public GlobalConfig globalConfig() {
    GlobalConfig globalConfig = new GlobalConfig();
    globalConfig.setMetaObjectHandler(new MyMetaObjectHandler());
    return globalConfig;
  }

}
